DDoS原生防护和Web应用防火墙组合使用方案

本文介绍了为网站类业务同时部署DDoS原生防护和Web应用防火墙的配置方法。该方案适用于为网站业务同时防御四层DDoS攻击和七层Web攻击、CC攻击的场景。

前提条件

  • 已创建ECS实例并部署了业务相关的应用,ECS实例拥有公网IP地址且网站有域名。

    说明

    如果网站用于在中国内地提供服务,则网站域名必须已经完成ICP备案,否则将不能接入中国内地的Web应用防火墙实例进行防护。更多信息,请参见ICP备案流程概述

  • 已购买DDoS原生防护。更多信息,请参见购买DDoS原生防护实例

    说明

    您在购买原生防护实例时,需要选择资源所在地域。该地域必须与ECS实例一致。

  • 已购买Web应用防火墙3.0。更多信息,请参见购买WAF 3.0包年包月实例

背景信息

为网站类业务开启DDoS原生防护时,如果业务本身除了需要防御DDoS攻击,还需要防御Web攻击、CC攻击,建议您为网站同时开启Web应用防火墙,由Web应用防火墙帮助业务防御常见的Web攻击、CC攻击。关于Web应用防火墙(WAF)的详细介绍,请参见什么是Web应用防火墙

同时使用DDoS原生防护和Web应用防火墙时,您需要先将网站业务接入Web应用防火墙进行防护,然后将WAF实例的IP地址添加为DDoS原生防护实例的防护对象。完成上述部署后,所有业务流量先经过WAF进行安全清洗,攻击流量(包括DDoS攻击、Web攻击、CC攻击)被丢弃,只有正常的业务流量被转发到源站服务器。

操作步骤

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地)。

  2. 在左侧导航栏,单击接入管理

  3. CNAME接入页签,单击接入

  4. 配置监听向导页,完成如下配置后,单击下一步

    配置项

    配置说明

    域名

    填写要防护的域名,包括精确域名(例如www.aliyundoc.com)或通配符域名(例如*.aliyundoc.com)。仅支持填写一个域名。

    如果您是首次添加该域名,需要验证是否拥有该域名的归属权。通过后,才能添加域名。具体操作,请参见验证域名归属权

    说明
    • 通配符域名能够匹配所有同级别的子域名,不能匹配不同级别的子域名。例如,*.aliyundoc.com能够匹配www.aliyundoc.comexample.aliyundoc.com等;*.aliyundoc.com不能匹配www.example.aliyundoc.com

    • 二级通配符域名能够匹配对应的二级主域名,例如,*.aliyundoc.com能够匹配aliyundoc.com

    • 三级通配符域名不能匹配对应的三级主域名,例如,*.example.aliyundoc.com不能匹配example.aliyundoc.com

    • 如果防护对象中同时存在精确域名和能够匹配该精确域名的通配符域名,精确域名的防护规则优先生效。

    协议类型

    选择网站使用的协议类型并填写对应端口。每输入一个端口,按回车确认。

    说明

    填写的端口必须在可选端口范围内。您可以单击查看端口范围,查看WAF支持的HTTP和HTTPS端口。更多信息,请参见WAF支持的端口范围

    • 选中HTTPS后,您还需要将网站域名关联的SSL证书上传到WAF,使WAF监听和防护网站的HTTPS业务流量。

      HTTPS证书上传方式区域,选择证书上传方式,并完成配置。

      手动上传

      选中手动上传,并填写证书名称证书文件(格式示例:-----BEGIN CERTIFICATE-----......-----END CERTIFICATE-----)、私钥文件(格式示例:-----BEGIN RSA PRIVATE KEY-----......-----END RSA PRIVATE KEY-----)。

      重要
      • 如果证书是PEM、CER、CRT格式,您可以使用文本编辑器直接打开证书文件,并复制其中的文本内容;如果是其他格式(例如PFX、P7B等),您必须将证书文件转换成PEM格式后,才可以使用文本编辑器获取其中的文本内容。您可以登录数字证书管理服务控制台,使用证书格式转换工具进行转换。具体操作,请参见证书格式转换

      • 如果域名关联了多个SSL证书(例如存在证书链),您必须将证书文件中的文本内容拼接后,再上传到WAF。

      选择已有证书

      如果您的证书为如下两种情况,您可以选中选择已有证书,从证书下拉列表中选择要上传到WAF的证书。

      • 证书已通过阿里云数字证书管理服务(原 SSL 证书)签发。

      • 证书为第三方证书,且已上传到数字证书管理服务

      • 重要

        选择上传到数字证书管理服务的第三方证书时,WAF控制台提示证书链完整性校验失败,使用该证书可能会影响您的业务访问,可能是选择的证书存在问题。您可以单击云盾-证书服务,在数字证书管理服务控制台重新上传新的证书。具体操作,请参见上传和共享SSL证书

      申请新证书

      选中申请新证书,单击立即申请,在数字证书管理服务为域名快速申请一张SSL证书。

      说明
      • 快速申请证书仅支持申请付费GeoTrust DV(Domain Validation)单域名证书。如果您需要申请其他类型的证书,请通过数字证书管理服务购买。更多信息,请参见购买SSL证书

      • 按照数字证书管理服务控制台提示为域名配置证书后,证书将自动上传到WAF。

      如果您的网站要同时支持国密SM2算法,您需要上传国密证书。仅包年包月企业版和旗舰版支持该功能,包年包月基础版和高级版、按量付费版不支持。

      1. 打开开启国密HTTPS开关。

      2. 国密HTTPS证书上传方式区域,选择证书上传方式,并完成配置。

        • 手动上传

          选中手动上传,并填写证书名称国密加密证书国密加密私钥国密签名证书国密签名私钥

          重要

          国密证书通常是PEM格式,一般包含四个文件:

          • 国密加密证书(例如server_enc.pem)和国密加密私钥(例如server_enc.key

          • 国密签名证书(例如server_sign.pem)和国密签名私钥(例如server_sign.key

          您可以使用文本编辑工具打开文件,复制其中的内容并粘贴到文本框。

          如果您的国密证书是其他格式(例如PFX、P7B等),您必须将证书文件转换成PEM格式。具体操作,请参见证书格式转换

        • 选择已有证书

          如果您的证书为如下两种情况,您可以选中选择已有证书,从证书下拉列表中选择要上传到WAF的证书。

          • 证书已通过阿里云数字证书管理服务签发。

          • 证书为第三方证书,且已上传到数字证书管理服务

        • 申请新证书

          选中申请新证书,单击立即申请,在数字证书管理服务为域名快速申请一张国密SSL证书。

          说明
          • 快速申请国密证书可申请付费CFCA或vTrus证书。

          • 按照数字证书管理服务控制台提示,为域名购买证书并完成证书签发后,证书将自动上传到WAF。

      3. 可选:如果您的网站只允许国密客户端访问,您可以打开仅支持国密客户端访问开关。

    • 选中HTTPS并配置证书后,您也可以根据业务需要,进行如下操作:

      • 如果您的网站支持HTTP 2.0协议,您可以选中HTTP2,开启HTTP 2.0业务防护。

        说明

        HTTP 2.0协议的端口与HTTPS协议端口一致。

      • 高级配置

        • 开启HTTPS的强制跳转(默认不开启)

          如果您希望将客户端的HTTP请求强制转换为HTTPS请求(默认跳转到443端口),以提高安全性,可开启该功能。

          重要

          只有在未选中HTTP协议时,支持开启该功能。

        • TLS协议版本

          自定义HTTPS通信中允许使用的TLS协议版本。如果客户端使用不符合要求的协议版本,WAF会丢弃其请求流量。此处设置的协议版本越高,通信安全性越好,但兼容性会有所降低。

          建议您根据网站本身的HTTPS配置,选择允许WAF监听的TLS协议版本。如果您不清楚网站的HTTPS配置,建议使用默认选项。

          可选项:

          • 支持TLS1.0及以上版本,兼容性最高,安全性较低(默认)

          • 支持TLS1.1及以上版本,兼容性较好,安全性较好

            使用该选项后,如果客户端使用TLS 1.0版本,将无法访问网站。

          • 支持TLS1.2及以上版本,兼容性较好,安全性最高

            使用该选项后,如果客户端使用TLS 1.0和1.1版本,将无法访问网站。

          如果您的网站支持TLS 1.3协议,请选中开启支持TLS1.3。WAF默认不监听TLS 1.3协议的客户端请求。

        • HTTPS加密套件

          自定义HTTPS通信中允许使用的加密套件。如果客户端使用不符合要求的加密套件,WAF会丢弃其请求流量。

          默认已选择WAF支持的全部加密套件。建议您只在网站只支持特定加密套件的前提下,再修改该配置。

          可选项:

          • 全部加密套件,兼容性较高,安全性较低(默认)

          • 协议版本的自定义加密套件、请谨慎选择,避免影响业务:如果您的网站本身只支持特定的加密套件,请选择该选项,并从WAF支持的加密套件中选择网站支持的加密套件。

            如果客户端使用其他加密套件,将无法访问网站。

    WAF前是否有七层代理(高防/CDN等)

    网站在接入WAF前是否启用了其他七层代理服务(例如DDoS高防、CDN等)。

    • 无其他代理服务,选择(默认)

      表示WAF收到的业务请求由客户端直接发起,而非通过其他代理服务转发。该场景下,WAF会直接获取与WAF建立连接的IP(来自请求的REMOTE_ADDR字段)作为客户端IP。

    • 有其他代理服务,选择

      表示WAF收到的业务请求来自其他七层代理服务转发,而非客户端直接发起。为保证WAF可以获取真实的客户端IP进行安全分析,您需要进一步设置客户端IP判定方式

      可选项:

      • (默认)取X-Forwarded-For中的第一个IP作为客户端源IP

        WAF默认读取请求Header字段X-Forwarded-For(XFF)中的第一个IP地址作为客户端IP。

      • 【推荐】取指定Header字段中的第一个IP作为客户端源IP,避免XFF伪造

        如果您的网站业务已通过其他代理服务的设置,规定将客户端源IP放置在某个自定义的Header字段(例如,X-Client-IP、X-Real-IP),则您需要选择该选项,并在指定Header字段框中输入对应的Header字段。

        说明

        推荐您在业务中使用自定义Header存放客户端IP,并在WAF中配置对应Header字段。该方式可以避免攻击者伪造XFF字段,躲避WAF的检测规则,提高业务的安全性。

        支持输入多个Header字段。每输入完一个Header字段,按回车进行确认。如果设置了多个Header,WAF将按顺序尝试读取客户端IP。如果第一个Header不存在,则读取第二个,以此类推。如果所有指定Header都不存在,则读取XFF中第一个IP地址作为客户端IP。

    更多配置

    • 开启IPv6

      WAF默认只处理IPv4业务流量。如果您的网站支持IPv6协议,您可以开启该功能,将IPv6业务流量接入WAF进行防护。WAF会为当前域名分配一个IPv6的WAF IP地址,用于处理IPv6客户端的请求流量。

      重要

      开启IPv6后,不支持开启独享IP、配置防护资源

    • 开启独享IP

      接入WAF防护的所有域名默认由一个WAF IP来防护。开启独享IP后,WAF会额外分配一个专用的WAF IP(即独享IP),来监听该域名的业务请求。当其他域名遭受大流量DDoS攻击时,启用独享IP的域名不会受到该影响。更多信息,请参见域名独享IP

      如果您的域名需要使用独享IP防护,可开启该功能。

      重要
      • 针对包年包月实例,仅高级版、企业版、旗舰版付费支持独享IP。您可以在总览页面单击立即升级,购买域名扩展规格后,开启独享IP。更多信息,请参见升级与降配

      • 按量付费实例按实际开启的独享IP数结算费用。更多信息,请参见按量付费计费说明

      • 开启独享IP后,不支持开启IPv6,且防护资源默认为共享集群

    • 防护资源

      选择要使用的防护资源类型。

      • 共享集群(默认)

      • 共享集群智能负载均衡

        开启共享集群智能负载均衡后,WAF将为当前域名提供至少三个不同地域的防护节点,实现异地多节点自动容灾,同时通过智能DNS解析能力和Least-time回源算法,保证业务流量从接入防护节点到转发回源站服务器整个链路的时延最短。更多信息,请参见智能负载均衡

        重要
        • 针对包年包月实例,仅高级版、企业版、旗舰版付费支持共享集群智能负载均衡。您可以在总览页面单击立即升级,启用智能负载均衡后,开启共享集群智能负载均衡。更多信息,请参见升级与降配

        • 按量付费实例按是否启用共享集群智能负载均衡结算费用。更多信息,请参见按量付费计费说明

        • 开启共享集群智能负载均衡后,不支持开启IPv6、独享IP。

    资源组

    从资源组下拉列表中选择该域名所属资源组。如果不选择,则默认加入默认资源组

    说明

    您可以使用资源管理服务创建资源组,根据业务部门、项目等维度对云资源进行分组管理。更多信息,请参见创建资源组

  5. 配置转发向导页,完成如下配置后,单击提交

    配置项

    说明

    负载均衡算法

    如果源站有多个服务器地址,您可以根据业务需要,选择不同的负载均衡算法,使WAF将回源请求转发到对应的服务器,实现负载均衡。可选项:

    • IP hash(默认)

      将来自同一个客户端IP的请求固定转发到的一个源站服务器地址。

    • 轮询

      将所有请求轮流分配给不同的源站服务器。

    • Least time

      通过智能DNS解析能力和Least-time回源算法,保证业务流量从接入WAF到转发回源站服务器整个链路的路径及时延最短。

      重要

      如需使用Least time算法,必须确认配置监听时,将防护资源设置为共享集群智能负载均衡。更多信息,请参见配置防护资源

    服务器地址

    填写网站对应的源站服务器的公网IP地址或源站域名,用于接收WAF转发回源的正常业务请求(回源请求)。可选项:

    • IP

      • 必须为公网可达的IP地址。

      • 支持填写多个IP地址。每填写一个IP地址,按回车进行确认。最多支持添加20个源站IP。

        说明

        如果设置了多个源站IP地址,WAF会将回源请求转发到不同的源站,实现负载均衡。

      • 支持同时配置IPv4和IPv6地址,或者只配置IPv4地址,只配置IPv6地址。

        同时配置IPv4和IPv6地址时,来自IPv4客户端的请求将被转发到IPv4源站,来自IPv6客户端的请求将被转发到IPv6源站。

        重要

        如需配置IPv6回源,必须确保在配置监听时,开启了IPv6防护。更多信息,请参见开启IPv6

    • 域名(如CNAME)

      服务器地址为域名时,只支持IPv4地址,暂不支持IPv6地址,即WAF只会将客户端请求转发到源站域名解析出来的IPv4地址。

    HTTPS高级设置

    • 开启HTTP回源

      HTTP回源表示WAF使用HTTP协议向源站转发回源请求,默认回源端口是80。开启该功能后,无论客户端访问WAF的端口是80或443,WAF转发的请求都会通过80端口访问源站。开启HTTP回源可以在无需改动源站服务器的前提下,通过WAF实现HTTPS访问,帮助您降低网站的负载损耗。

      重要

      如果您的网站不支持HTTPS回源,请务必开启该设置。

    • 启用回源SNI

      回源SNI(Server Name Indicator extension)表示WAF转发客户端请求到源站服务器,在与源站进行TLS握手时,通过SNI扩展字段指定要访问的主机,并与该主机建立HTTPS连接。如果您的源站服务器有多个虚拟主机(对应不同域名),则需要开启该设置。

      选中启用回源SNI后,您可以进一步设置SNI扩展字段的值。可选项:

      • 与实际请求host保持一致(默认)

        表示WAF回源请求中SNI扩展字段的值与请求头中Host字段的值保持一致。

        例如,您配置的网站域名为*.aliyundoc.com,客户端实际请求了www.aliyundoc.com(即Host字段值),则WAF回源请求中SNI扩展字段的值为www.aliyundoc.com

      • 自定义

        表示您自定义WAF回源请求中SNI扩展字段的值。

        一般情况无需自定义SNI,除非您的业务有特殊配置要求,希望WAF在回源请求中使用与实际请求Host不一致的SNI(即此处设置的自定义SNI)。

    其它高级设置

    • 启用流量标记

      如果您需要标记经过WAF的请求、记录并传递客户端真实源IP或源端口的信息回源站,您可以启用流量标记,并配置标记字段。例如,如果攻击者在域名接入WAF前,已获取源站IP信息,并通过购买其他WAF实例,将请求回源到目标源站时,您可以启用流量标记,并配置标记字段。当源站接收到请求后,建议对该字段进行校验。如果存在指定标记字段,则允许访问。

      重要

      请不要填写标准的HTTP头部字段(例如User-Agent等),否则会导致标准头部字段内容被自定义的字段值覆盖。

      标记字段分为以下类型:

      • 自定义Header

        通过配置Header名Header值,使WAF在回源请求中添加该Header信息,标记经过WAF的请求(区分没有经过WAF的请求,便于您的后端服务统计分析)。

        例如,您可以使用ALIWAF-TAG: Yes标记经过WAF的请求,其中,ALIWAF-TAG为Header名,Yes为Header值。

      • 客户端真实源IP

        通过配置真实客户端源IP所在的头部字段名,WAF可记录该头部字段并将该头部字段传递回源站。关于WAF判定客户端真实源IP的具体规则,请参见WAF前是否有七层代理(高防/CDN等)参数的描述。

      • 客户端真实源端口

        通过配置真实客户端源端口所在的头部字段名,WAF可记录该头部字段并将该头部字段传递回源站。

      单击新增标记,可以增加标记字段。最多支持设置5个标记字段。

    • 设置WAF回源到源站的超时时间

      • 设置新建连接超时时间:WAF与源站建立连接的超时时间,默认值为5s,可配置范围为1s~3600s。

      • 设置读连接超时时间:等待源站响应的超时时间,默认值为120s,可配置范围为1s~3600s。

      • 设置写连接超时时间:WAF向源站发送请求的超时时间,默认值为120s,可配置范围为1s~3600s。

    • 回源重试

      开启该功能后,如果回源失败,WAF会默认为每个源站尝试回源三次。关闭该功能后,如果回源失败,WAF将不再进行重试。

    • 回源长连接

      开启该功能后,您还需要进行如下设置:

      • 复用长连接的请求个数:默认值为1,000个,可配置范围为60个~1,000个。

      • 空闲长连接超时时间:默认值为15s,可配置范围为1s~60s。

      说明

      关闭该功能后,回源长连接将不支持WebSocket协议。

  6. 接入完成向导页,获取WAF提供的CNAME地址,并根据页面提示将域名的DNS解析地址设置为WAF提供的CNAME地址。具体操作,请参见修改域名DNS解析设置

    重要

    在修改域名DNS解析设置前,请确认如下内容:

    • 已通过本地验证确保转发配置生效。如果在WAF的网站转发配置未生效时修改域名DNS,可能导致业务中断。更多信息,请参见本地验证

    • 如果源站服务器安装了其他防火墙应用,您需要将WAF IP地址添加到应用的白名单,避免WAF转发回源站的正常业务请求被误拦截。您可以单击Web应用防火墙回源IP网段列表,查看并复制WAF回源IP地址段。更多信息,请参见放行WAF回源IP段

    复制CNAME

    完成以上配置后,您可以执行如下操作,检测域名是否添加成功:

    • 在浏览器输入已添加的域名,如果网站能正常访问,表示域名添加成功。

    • 在浏览器输入已添加的域名和Web攻击代码(例如<被防护域名>/alert(xss)alert(xss)为用作测试的跨站脚本攻击代码),如果返回405拦截提示页面,表示攻击被拦截,WAF防护成功。

  7. 在本地计算机上执行ping命令,ping 网站域名的CName地址,获取您已购买的WAF实例的IP地址。ping

  8. 将WAF的IP地址添加为DDoS原生防护实例的防护对象,为WAF实例开启DDoS原生防护企业版防护。具体操作请参见防护对象

    成功添加防护对象后,WAF实例将享有DDoS原生防护实例的DDoS攻击全力防护能力,在业务遭受DDoS攻击时,自动触发流量清洗,防御DDoS攻击。